package com.zhuiYun.project.api.login.service;

import com.zhuiYun.project.api.login.entity.User;
import com.zhuiYun.project.common.response.CommonResult;

/**
 * @Description TODO 用户登录
 * @ClassName UserLoginService
 * @Author HH
 * @Date 2023/4/3 18:22
 **/
public interface UserLoginService {
    /**
    * @Author hbx
    * @Description pc端注册检查账号名是否重复
    * @Date 2023/4/10 13:58
    * @param userName
    */
    User checkLoginName(String userName);

    /**
    * @Author hbx
    * @Description pc端注册检查手机号是否重复
    * @Date 2023/4/10 14:25
    * @param phone
    */
    User checkPhone(String phone);

    /**
    * @Author hbx
    * @Description pc端注册检查邮箱是否重复
    * @Date 2023/4/10 14:53
    * @param mail
    */
    User checkMail(String mail);

    /**
    * @Author hbx
    * @Description pc端注册向邮箱发送验证码
    * @Date 2023/4/10 18:44
    * @param mail
    */
    CommonResult registerByMailCode(String mail);

    /**
    * @Author hbx
    * @Description pc端注册验证邮箱验证码是否正确
    * @Date 2023/4/10 19:17
    * @param code
    * @param mail
    */
    CommonResult determineMailCode(String mail,String code);

    /**
    * @Author hbx
    * @Description pc端注册用户
    * @Date 2023/4/10 19:35
    * @param user
    */
    Integer registerUsers(User user);

    /**
    * @Author hbx
    * @Description pc端账号登录根据输入账号获取用户
    * @Date 2023/4/11 16:16
    * @param loginName
    */
    User getUserByLoginName(String loginName);

    /**
    * @Author hbx
    * @Description pc端邮箱登录根据邮箱获取用户
    * @Date 2023/4/12 11:02
    * @param emailAccount
    */
    User getUserByEmailAccount(String emailAccount);

    /**
    * @Author hbx
    * @Description pc端登录向邮箱发送验证码
    * @Date 2023/4/12 11:48
    * @param mail
    */
    CommonResult loginByMailCode(String mail);

    /**
    * @Author hbx
    * @Description 根据手机号查询用户信息
    * @Date 2023/4/16 19:38
    * @param phoneAccount
    */
    User getUserByPhoneAccount(String phoneAccount);

    /**
    * @Author hbx
    * @Description 腾讯云发送手机短信
    * @Date 2023/4/16 19:56
    * @param phone
    */
    CommonResult sendPhoneCode(String phone);

    /**
    * @Author hbx
    * @Description 比较手机验证码是否正确
    * @Date 2023/4/17 20:17
    * @param code
    */
    CommonResult comparePhoneCode(String code);

    /**
    * @Author hbx
    * @Description 根据用户id查询用户信息
    * @Date 2023/4/19 14:07
    * @param id
    */
    User getUserListByUserId(Integer id);
}
